#pragma once
#include "City.h"
#include "Queue.h"
//#include "Tree.h"

class Graph
{
private:
    int _numberCities;
    int _maxCities;
    City* _city;
    int** _routes;
public:
    Graph(int MaxCities_);
    void makeEmpty();
    bool isEmpty() const;
    bool isFull() const;
    void addCity(string cityName);
    void addRoute(City cityFrom_, City cityTo_, int weight_);
    int weight_Is(City firstCity_, City secondCity_);
    void getNeighboursCities(City city_, Queue& cities_);
    void clearMarks();
    void markCity(City city_);
    bool isMarked(City city_) const;
    Graph* getMST(City city_);
    City* getNearestCity(City city_);
    int getShortestPath(City cityFrom_, City cityTo_, Queue& cities_);
    City* getCity(string name_);
    void showGraph();
	void showCities();
    void showNeighbours(City city_);
    void removeRoutes();
    ~Graph();
};